package com.tsy.server.common.page;

import com.tsy.server.common.IErrorCode;

/**
 * 常用API返回码枚举
 */
public enum ResultCode implements IErrorCode {
    /**
     * 操作成功
     */
    SUCCESS(200, "操作成功"),
    
    /**
     * 操作失败
     */
    FAILED(500, "操作失败"),
    
    /**
     * 参数检验失败
     */
    VALIDATE_FAILED(400, "参数检验失败"),
    
    /**
     * 暂未登录或token已经过期
     */
    UNAUTHORIZED(401, "暂未登录或token已经过期"),
    
    /**
     * 没有相关权限
     */
    FORBIDDEN(403, "没有相关权限"),

    /**
     * 用户名或密码错误
     */
    USERNAME_NOT_EXISTS(1000, "用户名或密码错误"),


    /**
     * 邮箱验证码错误
     */
    EMAIL_CODE_ERROR(1001, "验证码错误"),
    
    /**
     * 邮箱验证码已过期
     */
    EMAIL_CODE_EXPIRED(1002, "验证码已过期"),
    
    /**
     * 用户名已存在
     */
    USERNAME_EXISTS(1003, "用户名已存在"),
    
    /**
     * 邮箱已存在
     */
    EMAIL_EXISTS(1004, "邮箱已存在"),

    /**
     * 账号已被禁用
     */
    ACCOUNT_DISABLED(1005, "账号已被禁用"),

    /**
     * 账号已在其他设备登录
     */
    ACCOUNT_LOGGED_IN_ELSEWHERE(1006, "账号已在其他设备登录");

    private final Integer code;
    private final String message;

    ResultCode(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    @Override
    public Integer getCode() {
        return code;
    }

    @Override
    public String getMessage() {
        return message;
    }
}